Google Native Client(縮寫為NaCl),是一個由谷歌所發起的開放原始碼計劃,採用BSD許可證。它採用沙盒技術,讓Intel x86、ARM或MIPS子集的機械碼直接在沙盒上運行。它能夠從瀏覽器直接運行程式機械碼,獨立於用戶的作業系統之外,使Web應用程式可以用接近於機械碼運作的速度來執行,同時兼顧安全性。其功能類似於微軟的 ActiveX,但是ActiveX只支援視窗系統。
開發者 | Google,以及其他開發者 | ||||||
---|---|---|---|---|---|---|---|
目前版本 | SDK: Pepper 45 (2015年7月10日 ), Client:
| ||||||
預覽版本 | 0.5(2011年7月28日 ) | ||||||
原始碼庫 | |||||||
程式語言 | C語言、C++ | ||||||
作業系統 | Cross-platform: Microsoft Windows, Linux, Mac OS, Chrome OS | ||||||
類型 | 利用沙盒技術,讓機械碼在瀏覽器上運行 | ||||||
許可協定 | New BSD license | ||||||
網站 | code |
Google將這項功能合併在Chrome OS之下開發。它也可以被用來開發安全的瀏覽器外掛程式。
2017年5月31日,Google宣佈放棄PNaCl轉向WebAssembly[4]。
技術內容
NaCl運用沙盒技術以防止外來(第三方)機械碼影響系統安全;特別是在x86平台上運用記憶體區段,限制外掛程式所能讀寫的記憶體範圍。[5]
NaCl運用機械碼驗證器(Code Validator)來保證只有安全機械碼能在系統執行。由於x86/x86-64是複雜指令集,指令長度不一,透過控制流程可能隱藏非安全機械碼,從而使驗證十分耗時。NaCl運用固定長度的16或32位元組的指令束(Instruction Bundle),使機械碼驗證器設計簡單(只有約600行C語言)和高效率;[5] [7] 而運用指令束只是失去5%的執行效率。
應用軟件的移植
NaCl支援單指令流多數據流指令(如SSE、3DNow!)及多線程介面,應用軟件一般只需簡單的修改便可以移植到NaCl平台;在2009年一個發佈會上,NaCl開發人員示範一個為NaCl平台的移植而修改了20行原始碼的H264解碼器軟件。[8]
參考資料
外部連結
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.